import commondUtil from './commondUtil';

const Validator = {

  /**
   * 校验是否不包含中文
   * @param {string} value - 输入值
   * @returns {boolean}
   */
  isNonChinese(value) {
    return commondUtil.isNotBlank(value) && !/[\u4E00-\u9FFF]/g.test(value);
  },

  /**
   * 校验不小于 X 位数
   * @param {string} value - 输入值
   * @param {number} min - 最小位数
   * @returns {boolean}
   */
  checkMinLength(value, min) {
    return min && min > 0 && commondUtil.isNotBlank(String(value)) && String(value).length >= min;
  },

  /**
   * 校验不大于 X 位数
   * @param {string} value - 输入值
   * @param {number} max - 最大位数
   * @returns {boolean}
   */
  checkMaxLength(value, max) {
    return max && max > 0 && commondUtil.isNotBlank(String(value)) && String(value).length <= max;
  },

  /**
   * 校验邮箱格式
   * @param {string} value - 输入值
   * @returns {boolean}
   */
  isEmail(value) {
    return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value);
  },

  /**
   * 校验是否纯数字
   * @param {string} value - 输入值
   * @returns {boolean}
   */
  isNumeric(value) {
    return /^\d+$/.test(value);
  },

  /**
   * 校验数字是否在指定范围内
   * @param {string|number} value - 输入值
   * @param {number} min - 最小值
   * @param {number} max - 最大值
   * @returns {boolean}
   */
  isNumberInRange(value, min, max) {
    if (!min || !max || min < 0 || min > max) {
      return false;
    }
    const num = Number(value);
    return !isNaN(num) && num >= min && num <= max;
  },
  
};

module.exports = Validator;